//axios封装   get post请求的封装  方便调用
import axios from 'axios'
//引入querystring
import qsstring from "querystring"
import router from '../router/index'
let baseUrl = "/api"

// 请求拦截器
axios.interceptors.request.use(req => {
    // console.log(req, "123124");
    if (req.url == "/api/userlogin") {
        return req
    } else {
        req.headers.authorization = sessionStorage.getItem('userinfo') ? JSON.parse(sessionStorage.getItem('userinfo')).token : null
        return req
    }
})
//响应拦截器
axios.interceptors.response.use((res) => {
    //没有添加请求头    强制进入登录页面
    if (res.data.msg == "请设置请求头,并携带验证字符串") {
        router.push("/login")
    }
    if (res.data.msg == "登录已过期或访问权限受限") {
        router.push("/login")
    }
    return res.data
})


//get请求封装
//参数   url  params
export const get = (url, params = {}) => {
    return new Promise((resolve, reject) => {
        axios.get(baseUrl + url, {
            params
        }).then(res => {
            resolve(res)
        }).catch(err => {
            reject(err)
        })
    })
}


//post请求封装
//参数  url接口地址  params参数  isFile  是否有文件
export const post = (url, params = {}, isFile = false) => {
    let data = {}      //空对象data 是用来代替params参数的     在axios请求中代替params
    if (isFile) {        //判断isFile是否存在   存在与不存在都要对参数进行处理
        data = new FormData()   //通过  new  FormData新建一个对象
        for (let i in params) {    //通过for in 循环  将params参数传到data内
            data.append(i, params[i])
        }
    } else {
        data = qsstring.stringify(params)   //没有文件上传   对参数进行处理  转换为字符串
    }
    return new Promise((resolve, reject) => {
        axios.post(baseUrl + url, data).then(res => {
            resolve(res)
        }).catch(err => {
            reject(err)
        })
    })
}